/** 
 * @file 2.基本写法2.cpp
 * @author 18-工程视觉-黄星照
 * @brief 阅读下列代码，回答代码最终输出，并解释。
 * @date 2020-09-25
 */


/**
 * max1: 5
 * max2: 2
 * 
 * int(2 + max2(2.0f, 3.5f)) => int(2 + 2.0f > 3.5f ? 2.0f : 3.5f)
 *                           => int(4.0f > 3.5f ? 2.0f : 3.5f)
 *                           => int(2.0f)
 *                           => 2
 * 数学运算符优先级高于逻辑运算符
 * 预处理宏不带括号后果自负
 */


#include <iostream>
#define max1(a, b) (a > b ? a : b)
#define max2(a, b) a > b ? a : b
int main(int argc, char **argv)
{
    ::std::cout << "max1: " << int(2 + max1(2.0f, 3.5f)) << ::std::endl;
    ::std::cout << "max2: " << int(2 + max2(2.0f, 3.5f)) << ::std::endl;
}